Distributed systems have created great opportunities for implementing more efficient and available system architectures. Systems may no longer be limited by the capabilities of an individual computing system, but may instead share the workload for performing complex computing tasks, maintaining and storing data, or implementing various applications or services among multiple different computing systems. For example, in some distributed systems data may be maintained among a collection of different systems in order to provide greater reliability and availability in the face of individual system failures.
The ability to leverage the capabilities of multiple different systems, however, can increase the complexity of ensuring that common data or other information maintained or shared among multiple systems is consistent and accessible to clients. If, for example, related or common data is maintained in different locations, a change to the location of data from one storage location to another may precipitate operations to make the various request routing systems that provide access to the data aware of the change in location. In order to do this, some distributed systems maintain routing instructions in a centralized authority wherein request routers of the distributed system consult the centralized authority for routing instructions in order to route each request received. Such systems provide high levels of routing consistency, but are susceptible to far reaching failures, such as system-wide failures, if the centralized authority fails or cannot be reached by the request routers.
Other distributed systems may distribute routing instructions among multiple request routers in order to avoid a single-point failure causing far reaching failures, such as system-wide failures. However, in order to provide consistent routing of requests among the multiple request routers, such systems may employ a consensus protocol. For example, a consensus protocol may require a consensus to be reached among a quorum of request routers in order to determine a route to be applied for routing each received request. In such systems, achieving consensus for each request may add latency to the processing of the requests. Also, achieving consensus may become complex in larger systems or as a scale of an existing system is increased.
In addition, distributed systems may allocate compute resources to clients of the distributed system, wherein the compute resources are allocated from among multiple separate computing systems. Such distributed systems may also employ a centralized routing authority or a consensus protocol to manage request routing. Such systems may also be susceptible to far reaching failures, such as system-wide failures, if a centralized routing authority fails or cannot be reached by the request routers. Also, use of a consensus protocol in such systems may increase request response latencies and become complex in large or expanding systems.
While embodiments are described herein by way of example for several embodiments and illustrative drawings, those skilled in the art will recognize that the embodiments are not limited to the embodiments or drawings described. It should be understood, that the drawings and detailed description thereto are not intended to limit embodiments to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope as defined by the appended claims. The headings used herein are for organizational purposes only and are not meant to be used to limit the scope of the description or the claims. As used throughout this application, the word “may” is used in a permissive sense (i.e., meaning having the potential to), rather than the mandatory sense (i.e., meaning must). The words “include,” “including,” and “includes” indicate open-ended relationships and therefore mean including, but not limited to. Similarly, the words “have,” “having,” and “has” also indicate open-ended relationships, and thus mean having, but not limited to. The terms “first,” “second,” “third,” and so forth as used herein are used as labels for nouns that they precede, and do not imply any type of ordering (e.g., spatial, temporal, logical, etc.) unless such an ordering is otherwise explicitly indicated.
Various components may be described as “configured to” perform a task or tasks. In such contexts, “configured to” is a broad recitation generally meaning “having structure that” performs the task or tasks during operation. As such, the component can be configured to perform the task even when the component is not currently performing that task (e.g., a computer system may be configured to perform operations even when the operations are not currently being performed). In some contexts, “configured to” may be a broad recitation of structure generally meaning “having circuitry that” performs the task or tasks during operation. As such, the component can be configured to perform the task even when the component is not currently on. The circuitry that forms the structure corresponding to “configured to” may include hardware circuits. In some contexts, the structure may be implemented as part of a general purpose computing device that is programmed to perform the task or tasks according to programming instructions.
Various components may be described as performing a task or tasks, for convenience in the description. Such descriptions should be interpreted as including the phrase “configured to.” Reciting a component that is configured to perform one or more tasks is expressly intended not to invoke 35 U.S.C. § 112(f), interpretation for that component.
“Based On.” As used herein, this term is used to describe one or more factors that affect a determination. This term does not foreclose additional factors that may affect a determination. That is, a determination may be solely based on those factors or based, at least in part, on those factors. Consider the phrase “determine A based on B.” While B may be a factor that affects the determination of A, such a phrase does not foreclose the determination of A from also being based on C. In other instances, A may be determined based solely on B.
The scope of the present disclosure includes any feature or combination of features disclosed herein (either explicitly or implicitly), or any generalization thereof, whether or not it mitigates any or all of the problems addressed herein. Accordingly, new claims may be formulated during prosecution of this application (or an application claiming priority thereto) to any such combination of features. In particular, with reference to the appended claims, features from dependent claims may be combined with those of the independent claims and features from respective independent claims may be combined in any appropriate manner and not merely in the specific combinations enumerated in the appended claims.